package UILayer;
import java.util.Scanner;
import controlLayer.*;
/**
 * Main menu er vores primære grænseflade, den brugers vores grænseflader for udlejning, salg, adressebog og vare.
 * Og samler dem i en enhed, så vi kan bruge programmet
 * @Author Gruppe 2
 * @version 1.0
 */
public class MainMenu
{

    private AdresseBogUI adrUI;
    private VareKartotekUI vareUI;
    private UdlejningsKartotekUI udlejningsUI;
    private SalgsKartotekUI salgsUI;

    /**
     * Construcor for main menu, bliver ikke brugt til noget.
     */
    public MainMenu()
    {

    }

    /**
     * Metoden vi bruger til at starte main menu, indeholder valgmulighederne for de forskellige menuer. Vi har
     * indbygget beskyttelse som sørger for at man kun vælger de tal der er tilgængelige.
     */
    public void mainMenuStart()
    {
        boolean exit=false;
        while (!exit) //! means while exit not is true (that is: false)
        {
            int choice = writeMainMenu();
            if(choice != 1 && choice != 2 && choice !=3 && choice !=4 && choice != 5)
            {
                System.out.println("Du skal vælge enten 1, 2, 3, 4 eller 5");
            }
            if(choice == 1)
            {
                startAddressBook();
            }//end if
            else{
                if(choice == 2){ 
                    startVare();
                }//end if
                else{
                    if(choice == 3){
                        startUdlejninger();
                    }//end if
                    else{
                        if(choice == 4){
                            startSalg();
                        }//end if
                        else{
                            if(choice==5)
                            {                           
                                writeEnd();
                                exit = true;
                            }//end if
                        }//end else
                    }// end else
                }//end else
            }//end else
        }//end while
    }//end start

    /**
     * Metoden vi bruger til at skrive selve menuen, er os metoden som modtager menu input. Vi har indbygget
     * beskyttelse mod indput andet end tal.
     */
    private int writeMainMenu()
    {       
        // creates a keyboard object to read input
        Scanner keyboard = new Scanner(System.in);
        System.out.println(" *** MainMenu ***");
        System.out.println(" (1) AdresseBog");
        System.out.println(" (2) Varer");
        System.out.println(" (3) Udlejninger");
        System.out.println(" (4) Salg");
        System.out.println(" (5) Luk systemet");
        System.out.print("\n Tag dit valg: ");

        int choice = 0;
        boolean ok = false;
        while(!ok)
        {
            try
            {
                choice = keyboard.nextInt();
                ok = true;
            }
            catch (Exception e)
            {
                System.out.println("Du skal skrive et tal - prøv igen");
                String input = keyboard.nextLine();
            }

        }//end while

        return choice;
    }

    /**
     * Metoden som starter adressebog.
     */
    private void startAddressBook()
    {
        adrUI= new AdresseBogUI();
        adrUI.start();

    }

    /**
     * Metoden som starter varekartoteket
     */
    private void startVare()
    {
        vareUI = new VareKartotekUI();
        vareUI.start();

    }

    /**
     * Metoden som starter udlejningskartoteket
     */
    private void startUdlejninger()
    {
        udlejningsUI = new UdlejningsKartotekUI();
        udlejningsUI.start();
    }

    /**
     * Metoden som starter salgskartoteket
     */
    private void startSalg()
    {
        salgsUI = new SalgsKartotekUI();
        salgsUI.start();
    }

    /**
     * Metoden som lukker systemet.
     */
    private void writeEnd()
    {
        System.out.println(" Systemet lukker ned ");
    }
}
